import * as THREE from 'three';
let moveFlag = false;
var point = new THREE.PointLight(0xffffff, 1, 100);
// point.position.set(0, 0, 0);
// const sphereSize = 0.5;//辅助对象的大小
// const pointLightHelper = new THREE.PointLightHelper(point, sphereSize, 0xFF00FF);
// const axisHelper = new THREE.AxesHelper(5);
export default function pointLight(vis) {
    let domContainer = document.getElementById('threeContainer');
    if (vis) {
        window.controls.enableRotate = false;// 进入了这个页面就不再触发模型拖动事件了
        domContainer?.addEventListener('mousedown', onmousedown);
        domContainer?.addEventListener('mousemove', onmousemove);
        domContainer?.addEventListener('mouseup', onmouseup);
        // window.controls.addEventListener("change", onPointerMove);
        // 增加点光源
        window.threescene.add(point);
        // 需要捕获鼠标点击未松开时的位置作为点光源的位置
        // window.threescene.add(pointLightHelper);
    }
    else {
        window.controls.enableRotate = true;
        // 卸载点光源，卸载鼠标监听事件
        domContainer?.removeEventListener('mousedown', onmousedown);
        domContainer?.removeEventListener('mousemove', onmousemove);
        domContainer?.removeEventListener('mouseup', onmouseup);
       
        // filter过滤出type为type的
        let pointlightObj = window.threescene.children.filter((item)=>{
            return item.type==="PointLight"
        })
        window.threescene.remove(pointlightObj[0]);
        console.log(pointlightObj,'pointlightObj');
        console.log(window.threescene.children,'window.threescene.children');
        
    }
}
function onmousedown(event) {
    moveFlag = true;
}
function onmousemove(event) {
    if (moveFlag) {
        // 首先，通过监听鼠标移动事件获取鼠标在窗口中的位置，然后将其转换为 Three.js 中的标准坐标系（范围为[-1, 1]）。
        const mouseX = event.offsetX;
        const mouseY = event.offsetY;
        const vector = new THREE.Vector3(
            (mouseX / document.getElementById("threeContainer")?.clientWidth) * 2 - 1,
            -(mouseY / document.getElementById("threeContainer")?.clientHeight) * 2 + 1,
            0.5
        );
        // 接着，使用 unproject() 方法将标准坐标系转换为三维坐标系。这里使用了 camera 对象来进行坐标系转换。
        vector.unproject(window.camera);
        // 然后，计算出从相机位置到鼠标指向的方向向量，并将其归一化。
        const dir = vector.sub(window.camera.position).normalize();
        const distance = -window.camera.position.z / dir.z;
        // 接着，根据相机位置和鼠标指向的方向向量计算出光源位置。
        const pos = window.camera.position.clone().add(dir.multiplyScalar(distance));
        // 最后，将计算出的光源位置赋值给 pointLight 对象的 position 属性，以更新光源位置。
        point.position.copy(pos);
        // pointLightHelper.light = point;
    }


}
function onmouseup() {
    moveFlag = false;
}